package com.ship.dispatch.bean;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ship.common.core.mapping.SearchItem;
import com.ship.common.core.mapping.TableColumn;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 船舶信息
 *
 * @author AbyssRabbit@163.com
 * @since 2023-10-18
 */
@Data
@TableName("sp_information")
public class SpInformation extends BaseBean {

    /**
     * IMO
     */
    @SearchItem
    @TableColumn
    private String imo;

    /**
     * 船舶名称
     */
    @SearchItem
    @TableColumn
    private String nameOfVessel;

    /**
     * 船舶曾用名
     */
    @SearchItem
    @TableColumn
    private String formerNameOfShip;

    /**
     * 注册港口
     */
    @SearchItem
    @TableColumn
    private String registeredPort;

    /**
     * 所属国家
     */
    @SearchItem
    @TableColumn
    private String country;

    /**
     * 船型
     */
    @SearchItem
    @TableColumn
    private Boolean shipType;

    /**
     * MMSI
     */
    @SearchItem
    @TableColumn
    private String mmsi;

    /**
     * 载重吨
     */
    @SearchItem
    @TableColumn
    private BigDecimal deadweightTon;

    /**
     * 净吨位
     */
    @SearchItem
    @TableColumn
    private BigDecimal netTonnage;

    /**
     * 总吨位
     */
    @SearchItem
    @TableColumn
    private BigDecimal grossTonnage;

    /**
     * LNG货舱类型
     */
    @SearchItem
    @TableColumn
    private Integer lngCargoTankType;

    /**
     * 推进系统类型
     */
    @SearchItem
    @TableColumn
    private Integer typeOfPropulsionSystem;

    /**
     * 长度
     */
    @SearchItem
    @TableColumn
    private BigDecimal length;

    /**
     * 宽度
     */
    @SearchItem
    @TableColumn
    private BigDecimal width;

    /**
     * 舱容
     */
    @SearchItem
    @TableColumn
    private BigDecimal storageCapacity;

    /**
     * 舱容(MMBtu)
     */
    @TableField(exist = false)
    private BigDecimal storageCapacityMmbtu;

    /**
     * 油耗
     */
    @SearchItem
    @TableColumn
    private BigDecimal oilConsumption;

    /**
     * 建造年份
     */
    @SearchItem
    @TableColumn
    private Integer yearOfConstruction;

    /**
     * 建造者
     */
    @SearchItem
    @TableColumn
    private String builder;

    /**
     * 建造国家
     */
    @SearchItem
    @TableColumn
    private Integer buildACountry;

    /**
     *  租金时间段，json字符串
     */
    private String rentTimeSlot;

    /**
     * 空船排水量
     */
    @SearchItem
    @TableColumn
    private BigDecimal emptyShipDisplacement;

    /**
     * 排水量最大值
     */
    @SearchItem
    @TableColumn
    private BigDecimal maximumDisplacement;

    /**
     * 设计吃水
     */
    @SearchItem
    @TableColumn
    private BigDecimal designDraft;

    /**
     * 最大航速
     */
    @SearchItem
    @TableColumn
    private BigDecimal maximumSpeed;

    /**
     * 满载自然蒸发率
     */
    @SearchItem
    @TableColumn
    private BigDecimal fullLoadNaturalEvaporationRate;

    /**
     * 空载自然蒸发率
     */
    @SearchItem
    @TableColumn
    private BigDecimal noLoadNaturalEvaporationRate;

    /**
     * 再液化装置
     */
    @SearchItem
    @TableColumn
    private Boolean reliquefactionDevice;

    /**
     * 船舶设计油耗表
     */
    @SearchItem
    @TableColumn
    private String shipDesignFuelConsumptionTable;

    /**
     * 历史挂靠港口数
     */
    @SearchItem
    @TableColumn
    private String numberOfHistoricalAffiliatedPorts;

    /**
     * 船舶租赁历史
     */
    @SearchItem
    @TableColumn
    private String historyOfShipLeasing;

    /**
     * 船东
     */
    @SearchItem
    @TableColumn
    private String shipowner;

    /**
     * 船舶管理公司
     */
    @SearchItem
    @TableColumn
    private String shipManagementCompany;

    /**
     * 租用时间
     */
    private Date leaseTime;

    /**
     * 租用时长
     */
    private Integer leaseDuration;

    /**
     * 是否是虚拟船（0：否，1：是）
     */
    private Integer isVirtual;

    /**
     *还船状态(数值，单位立方米)
     */
    @TableField(exist = false)
    private String redeliveryStatus;

    /**
     *船保证的满载蒸发率
     */
    @TableField(exist = false)
    private BigDecimal evaporationRate;

    /**
     * 虚拟租入租金时间段，json字符串
     */
    private String virtualRentInTime;

    /**
     * 虚拟租出租金时间段，json字符串
     */
    private String virtualRentOutTime;
}
